/*
 * 文件名：IBaseDao.java
 * 版权： 航天恒星科技有限公司
 * 描述：〈描述〉
 * 修改时间：2015年6月4日
 * 修改内容：〈修改内容〉
 */
package com.zmkm.project.dbserver.utils;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

/**
 * 
 * 〈一句话功能简述〉持久层基础接口 〈功能详细描述〉 定义了基本的增删改查的方法名， 当其它DAO接口需要实现基本的CRUD操作时，请继承此接口
 * 
 * @author chenl
 * @version [版本号, 2015年5月7日]
 * @param <T> 范型
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface IBaseDao<T>
{
    /**
     * 添加实体对象
     * 
     * @param entity 要保存的实体
     * @return 插入行条数
     * @throws Exception mybatis运行时异常
     */
    int save(T entity)
        throws Exception;
    
    /**
     * 修改实体对象
     * 
     * @param entity 要修改的实体
     * @return 插入行条数
     * @throws Exception mybatis运行时异常
     */
    int update(T entity)
        throws Exception;
    
    /**
     * 〈一句话功能简述〉按照ID逻辑删除实体对象 〈功能详细描述〉
     * 
     * @param ids 主键ID数组
     * @return 插入行条数
     * @throws Exception mybatis运行时异常
     * @see [类、类#方法、类#成员]
     */
    int remove(@Param("ids") String[] ids)
        throws Exception;
    
    /**
     * 按照ID查询实体对象
     * 
     * @param id 主键ID
     * @return 查询对应的Model
     * @throws Exception mybatis运行时异常
     */
    T findById(Serializable id)
        throws Exception;
    
    /**
     * 查询所有实体对象
     * 
     * @return 实体集合
     * @throws Exception mybatis运行时异常
     */
    List<T> findAll()
        throws Exception;
    
    /**
     * 
     * 〈一句话功能简述〉 按条件查询 比如 ： 分页 〈功能详细描述〉
     * 
     * @param params 查询条件
     * @return 实体集合
     * @throws Exception mybatis运行时异常
     * @see [类、类#方法、类#成员]
     */
    List<T> findByParams(Map<String, Object> params)
        throws Exception;
    
    /**
     * 〈一句话功能简述〉按条件查询记录总数 〈功能详细描述〉
     * 
     * @param params 查询条件
     * @return 插入行条数
     * @throws Exception mybatis运行时异常
     * @see [类、类#方法、类#成员]
     */
    int getCount(Map<String, Object> params)
        throws Exception;
    
}
